home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / kcl / akcl / akcl1615.lha / h / att.h < prev    next >
Text File  |  1991-03-29  |  3KB  |  105 lines

  1. #define ATT
  2. #define AV
  3. #define UNIX
  4. #define SFASL  
  5.  
  6. #define MAXPAGE 16384
  7. #define VSSIZE 8152
  8.  
  9. #define     MEM_SAVE_LOCALS \
  10.   struct filehdr fileheader;\
  11.   struct exec header;\
  12.   struct scnhdr sectionheader;\
  13.   int diff
  14.  
  15.  
  16. #define COPY_TO_SAVE \
  17.  do{for (;;) { \
  18.         n = getc(original); \
  19.         if (feof(original)) \
  20.             break; \
  21.         putc(n, save); \
  22.     }}while (0)
  23.  
  24. #define READ_HEADER \
  25.  do{    fread(&fileheader, sizeof(fileheader), 1, original); \
  26.     fread(&header, sizeof(header), 1, original); \
  27.     data_begin = (char *)header.data_start; \
  28.     data_end = core_end; \
  29.     original_data = header.a_data; \
  30.     header.a_data = data_end - data_begin; \
  31.     diff = header.a_data - original_data; \
  32.     header.a_bss = sbrk(0) - core_end; \
  33.     fileheader.f_symptr += diff; \
  34.     fwrite(&fileheader, sizeof(fileheader), 1, save);\
  35.     fwrite(&header, sizeof(header), 1, save); \
  36.     fread(§ionheader, sizeof(sectionheader), 1, original); \
  37.     if (sectionheader.s_lnnoptr) \
  38.         sectionheader.s_lnnoptr += diff; \
  39.     fwrite(§ionheader, sizeof(sectionheader), 1, save); \
  40.     fread(§ionheader, sizeof(sectionheader), 1, original); \
  41.     sectionheader.s_size += diff; \
  42.     if (sectionheader.s_lnnoptr) \
  43.         sectionheader.s_lnnoptr += diff; \
  44.     fwrite(§ionheader, sizeof(sectionheader), 1, save); \
  45.     fread(§ionheader, sizeof(sectionheader), 1, original); \
  46.     sectionheader.s_paddr += diff; \
  47.     sectionheader.s_vaddr += diff; \
  48.     sectionheader.s_size = header.a_bss; \
  49.     if (sectionheader.s_lnnoptr) \
  50.         sectionheader.s_lnnoptr += diff; \
  51.     fwrite(§ionheader, sizeof(sectionheader), 1, save); \
  52.     for (n = 4;  n <= fileheader.f_nscns;  n++) { \
  53.         fread(§ionheader, sizeof(sectionheader), 1, original); \
  54.         if (sectionheader.s_scnptr) \
  55.             sectionheader.s_scnptr += diff; \
  56.         if (sectionheader.s_lnnoptr) \
  57.             sectionheader.s_lnnoptr += diff; \
  58.         fwrite(§ionheader, sizeof(sectionheader), 1, save); \
  59.     }}while(0)
  60.  
  61. #define FILECPY_HEADER    filecpy(save, original, header.a_text)
  62.  
  63.  
  64. #define exec        aouthdr
  65. #define a_text        tsize
  66. #define a_data        dsize
  67. #define a_bss        bsize
  68.  
  69. /* Include <fcntl.h> rather than <sys/file.h> */
  70.  
  71. #define HAVE_FCNTL
  72.  
  73. #define NUMBER_OPEN_FILES _NFILE 
  74.  
  75. #define SET_REAL_MAXPAGE real_maxpage = MAXPAGE
  76.  
  77. #define INIT_ALLOC \
  78.          heap_end = sbrk(0); \
  79.     if (i = ((int)heap_end & (PAGESIZE - 1))) \
  80.         sbrk(PAGESIZE - i); \
  81.     heap_end = core_end = sbrk(0);
  82.  
  83.     
  84. #define IF_ALLOCATE_ERR \
  85.     if (core_end != sbrk(0)) \
  86.         error("Someone allocated my memory!"); \
  87.     if (core_end != sbrk(PAGESIZE*(n - m)))
  88.     
  89.  
  90. #define cs_check(x) 
  91.  
  92. /* need to define getwd and friends in unixfsys.c
  93.  Basically as would need to in ATT*/
  94.  
  95. #define NEED_GETWD
  96.  
  97.   /* if there is no input there return false */
  98. #define LISTEN_FOR_INPUT(fp) \
  99.   if((fp)->_cnt <=0 && (c=0,ioctl((fp)->_file, FIONREAD, &c),c<=0)) \
  100.      return 0
  101.  
  102.  /* have sys/ioctl.h */
  103. #define HAVE_IOCTL
  104.   
  105.